Virtualization allows multiplexing of an underlying host machine between different virtual machines. The host machine allocates a certain amount of its storage resources to each of the virtual machines. Each virtual machine is then able to use the allocated storage resources to execute applications, including operating systems (referred to as guest operating systems). Executable code that provides the virtualization is commonly referred to as a hypervisor (also known as a virtual machine monitor (VMM)). The hypervisor emulates the underlying hardware of the host computer, making the use of the virtual machine transparent to the guest operating system and the user of the computer.